package thefirst.member.model;

import java.sql.SQLException;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
/**
 * MemberServiceImpl
 * 회원들에게 제공되는 서비스를 제공하는 클래스
 * @author kosta-00-30
 *
 */
@Service
public class MemberServiceImpl implements MemberService{
	@Resource(name="studentOfMemberDaoImpl")
	private MemberDao StudentOfmemberDao;	
	@Resource(name="teacherOfMemberDaoImpl")
	private MemberDao TeacherOfmemberDao;
	
	
	@Override
	public void registerMember(MemberVO mvo) throws SQLException {
		if(mvo.getMembertype().equals("s")){
			StudentOfmemberDao.registerMember(mvo);	
		}else if(mvo.getMembertype().equals("t")){
			TeacherOfmemberDao.registerMember(mvo);
		}
	}
	
	// 회원의 정보를 조회하는 메서드 
	@Override
	public MemberVO showMember(MemberVO mvo) throws SQLException {
		MemberVO rmvo=null;
		
		if(mvo.getMembertype().equals("s")){
			rmvo=StudentOfmemberDao.showMember(mvo);
		}else if(mvo.getMembertype().equals("t")){
			rmvo=TeacherOfmemberDao.showMember(mvo);
		}
		rmvo.setId(mvo.getId());
		return rmvo;
	}

	
	/**
	 * updateMember 를 실행하는 메서드
	 * 선생님인지 학생인지 구분하고
	 * 변경된 항목에 따라 다른 Dao계층의 메서드를 호출한다.
	 * update가 무사히 이루어지면 showMember를 통해 변경된 사항을 로딩한다.
	 */
	@Override
	public MemberVO updateMember(MemberVO mvo) throws SQLException {
		// TODO Auto-generated method stub
		MemberVO rmvo=null;
		
		if(mvo.getMembertype().equals("s")){
			if(mvo.getName()!=null){
				if(StudentOfmemberDao.updateName(mvo)==1){
					rmvo=StudentOfmemberDao.showMember(mvo);
				}
			}
			
			
		}else if(mvo.getMembertype().equals("t")){
			if(mvo.getName()!=null){
				if(TeacherOfmemberDao.updateName(mvo)==1){
					rmvo=TeacherOfmemberDao.showMember(mvo);
				}
			}else if(mvo.getGender()!=null){
				if(TeacherOfmemberDao.updateGender(mvo)==1){
					rmvo=TeacherOfmemberDao.showMember(mvo);
				}
			}
			
		}
		return rmvo;
	}

	/**
	 * 아이디와 패스워드를 입력받아 학생Dao와
	 * 선생님Dao 접근해서 rmvo가 null이 아니면 학생이며
	 * rmvo가 null 이면 선생님이다.
	 */
	@Override
	public MemberVO login(MemberVO mvo) throws SQLException {
		MemberVO rmvo=
				StudentOfmemberDao.login(mvo);
		if(rmvo==null){
			rmvo=TeacherOfmemberDao.login(mvo);
		}
		
		return rmvo;
	}

}
